package ejbentidad;

import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import modelo2.Cliente;
import modelo2.Descripcion;
import modelo2.Factura;
import modelo2.LineaFactura;
import modelo2.Producto;

public class Relaciones {

    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("EJBEntidadPU");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        try {
            Producto p = new Producto();
            p.setNombre("Libro 1");
            p.setImpuestosActual(4f);
            p.setPrecioActual(15f);
//            em.persist(p);
            Descripcion d = new Descripcion();
            d.setTexto("Descripción del producto");
            p.setDescripcion(d);
            
            Cliente c = new Cliente();
            c.setCif("111111111A");
            c.setNombre("Jose");
//            em.persist(c);
            
            Factura f = new Factura();
            f.setFecha(new Date());
            f.setNumero(1);
            
            f.setElCliente(c);
//            c.getLasFacturas().add(f);
            
            em.persist(f);
            
            LineaFactura línea = new LineaFactura();
            línea.setElProducto(p);
//            em.persist(línea);
            
            f.getLasLineas().add(línea);
            
            
            Factura f2 = new Factura();
            f2.setFecha(new Date());
            f2.setNumero(2);
            f2.setElCliente(c);
            em.persist(f2);            

            em.flush();
//            c = em.find(Cliente.class, c.getId());
            List<Factura> lasFacturas = c.getLasFacturas();
            System.out.println(lasFacturas);
            for (Factura factura : lasFacturas) {
                System.out.println(factura.getNumero());
            }
            em.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            em.getTransaction().rollback();
        } finally {
            em.close();
        }


    }
}
